OSSP CVS Repository

ossp - Difference in ossp-pkg/rc/00TODO versions 1.9 and 1.10
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/rc/00TODO 1.9 -> 1.10

--- 00TODO       2002/01/25 16:04:41     1.9
+++ 00TODO       2002/01/29 15:35:05     1.10
@@ -25,3 +25,70 @@
 
 Error handling
   Classic error, give 'restart' command in place of 'start' to stopped prog
+
+Pseudocode
+                ***********************************
+                * psoudocode implementation of rc *
+                ***********************************
+
+parse command line options
+read and merge all "rc.conf" files
+
+parse "Locate"
+
+ Locate        /cw/etc/rc.d/rc.%{RCFILE:s/^all$/*/}
+ Locate        /cw/local/etc/rc.d/rc.%{RCFILE:s/^all$/*/}
+ Locate        %{RCFILE}/.duerc
+ Locate        ${HOME}/.duerc:m/^<dir path="%{RCFILE}">(.*)<\/dir>/i
+ Locate        ${HOME}/.duerc.%{RCFILE:s/^\///:s/[\/]/-/g}
+ Locate        path/file/regex:regex_inside_file
+
+foreach given locate {
+    for each (locate all possible rcfiles working out the regex) {
+        continue if (absolute path seen previously) //avoid duplicates
+        if (filename matches given rcfile && securitycheck(RequireUmask, RequireOwner, RequireGroup))
+            load file and grab only a part of the file according to info after colon given in "locate"
+    }
+}
+
+foreach located_rcfile_fraction {
+        parse rcfile into blocks according to --ParseSectionDef
+        take out %config section according to --NameConfig
+        take out %common section according to --NameCommon
+        take out any sections given on command line
+}
+
+foreach section {
+    if (multiple rcfiles, i.e. all)
+        sort rcfiles by section priority.
+    foreach rcfile {
+        script = "";
+        script += %config from rcfile
+        script += %env from rc.env and override it
+        create_script_for_rcfile(script, section, parent=no)
+        expand our internal variables
+        execute, print or printeval script with user & group priveleges
+            and command interpreter according to options or section header
+    }
+}
+EXIT
+
+
+create_script_for_rcfile(script, section, parent)
+{
+    script += "${body}" //start with a pseudo value
+
+    if (!parent) { //only one rc.func!?
+        replace ${body} with %common from rc.func
+        if no ${body} assume prepend
+    }
+    replace ${body} with %common from rcfile
+    if no ${body} assume prepend
+    if (!parent) { //only one rc.func!?
+        replace ${body} with %section from rc.func
+        if no ${body} assume prepend
+    }
+    replace ${body} with %section from rcfile
+
+    expand references using --ParseSectionRef and calling create_script_for_rcfile(section, parent=yes);
+}

CVSTrac 2.0.1